|
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**) ОТДЕЛ ПолеПамятки;
(*============================================================================*
* НАЗНАЧЕНИЕ: поле для Памятки
*============================================================================*)
ИСПОЛЬЗУЕТ
Надел,
Поле,
Памятка,
СтрокиПамятки,
Ввод ИЗ "..\Обмен\";
(******************************************************************************)
ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка);
(* получить и обработать управляющие послания *)
ПЕР
код:ЦЕЛ;
УКАЗ
ДЛЯ посылка ВИДА
| Ввод.ОтКлавиш:
код:=посылка.код;
посылка.код:=0; (* скорее всего отработаем посылку *)
ВЫБРАТЬ код ИЗ
| 1BH: поле.состояние:=Поле.сОтмена (* Esc *)
| 79H: поле.состояние:=Поле.сДалее (* F10 *)
| 0DH: поле.состояние:=Поле.сДалее (* Ent *)
ИНАЧЕ
посылка.код:=код
КОН
| Ввод.ОтМышки:
ЕСЛИ НЕ (Ввод.прокрут В посылка.события) ТО
поле.состояние:=Поле.сДалее;
посылка.отработана:=ВКЛ
КОН
ИНАЧЕ
КОН
КОН Приём;
(******************************************************************************)
ЗАДАЧА Выполнить-(холст:Надел.Доступ; памятка:Памятка.Доступ; окружение:Поле.Доступ):ЦЕЛ;
(* Выбрать строку Памятки *)
ПЕР
поле:Поле.Доступ;
строки:СтрокиПамятки.Доступ;
верх,лево,колонок,строк:ЦЕЛ;
УКАЗ
верх:=холст.вс+1;
лево:=холст.лк;
строк:=окружение.нс-верх+1;
ЕСЛИ строк > памятка.строк+2 ТО
строк:=памятка.строк+2
КОН;
колонок:=холст.пк-лево+1;
поле:=Поле.Создать(верх,лево,строк,колонок,ПУСТО,ОТКЛ,Приём);
строки:=СтрокиПамятки.Создать(0,0,строк,колонок,памятка);
Поле.ДобавитьНадел(поле,строки);
Поле.Рисовать(поле);
ПОВТОРЯТЬ
Поле.Проверить(поле)
ДО поле.состояние # Поле.сРабота;
Поле.Рисовать(окружение);
ЕСЛИ поле.состояние = Поле.сДалее ТО
ВОЗВРАТ строки.текущая
ИНАЧЕ
ВОЗВРАТ -1
КОН
КОН Выполнить;
КОН ПолеПамятки.
|
|